package com.ctd.springframework.util.reflection;

import java.lang.reflect.Constructor;
import java.lang.reflect.Modifier;

/**
 * 反射工具类
 *
 * @author chentudong
 * @date 2020/9/11 16:42
 * @since 1.0
 */
public class ReflectionUtils {

    /**
     * 使给定的构造函数可访问，显式设置它可访问
     *
     * @param declaredConstructor declaredConstructor
     * @param <T>                 <T>
     */
    public static <T> void makeAccessible(Constructor<T> declaredConstructor) {
        if (!Modifier.isPublic(declaredConstructor.getModifiers()) ||
                !Modifier.isPublic(declaredConstructor.getDeclaringClass().getModifiers()) &&
                        !declaredConstructor.isAccessible()) {
            declaredConstructor.setAccessible(true);
        }
        ;
    }
}
